#!/bin/sh

set -ex

SRC_PATH=$(cd `dirname $0`;pwd)
# echo "${SRC_PATH}"
BUILD_PATH=${SRC_PATH}/build
INSTALL_PATH=${SRC_PATH}/install

CPPTOML_PATH=${SRC_PATH}/logger
CPPTOML_BUILD=${CPPTOML_PATH}/build
CPPTOML_INSTALL=${SRC_PATH}/install

##################################################################################
# 编译选项: 1 linux, 2 交叉编译,需要配置文件                                           #
# -eq 等于                                                                        #
# -ne 不等于                                                                      #
# -gt 大于                                                                        #
# -ge 大于等于                                                                     #
# -lt 小于                                                                        #
# -le 小于等于                                                                     #
# -e filename 如果 filename存在，则为真                                             #
# -d filename 如果 filename为目录，则为真                                           #
# -f filename 如果 filename为常规文件，则为真                                        #
# -L filename 如果 filename为符号链接，则为真                                        #
# -r filename 如果 filename可读，则为真                                             #
# -w filename 如果 filename可写，则为真                                             #
# -x filename 如果 filename可执行，则为真                                            #
# -s filename 如果文件长度不为0，则为真                                               #
# -h filename 如果文件是软链接，则为真                                                #
# filename1 -nt filename2 如果 filename1比 filename2新，则为真。                     #
# filename1 -ot filename2 如果 filename1比 filename2旧，则为真。                     #
##################################################################################
set_toolchain_file()
{
  BUILD_TYPE=1
if [ 1 -eq ${BUILD_TYPE} ];then
  TOOLCHAIN_FILE=
  echo "build type is 1"
elif [ 2 -eq ${BUILD_TYPE} ]; then
  TOOLCHAIN_FILE=${SRC_PATH}/toolchain.cmake # 配置文件路径
  echo "build type is 2, ${TOOLCHAIN_FILE}"
fi
}

##################################################################################
#                     交叉编译工具参数: toolchain.cmake                             #
##################################################################################
build_cpptoml()
{
  # 编译依赖库 yaml-cpp BUILD_SHARED_LIBS:2 静态库
  cd ${CPPTOML_PATH}
  cmake -B${CPPTOML_BUILD} -H./ -DCMAKE_INSTALL_PREFIX=${CPPTOML_INSTALL} -DBUILD_SHARED_LIBS=2 -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} -DCMAKE_BUILD_TYPE=Release
  cd ${CPPTOML_BUILD} && make -j 6
  sleep 1
  make install
  cd ${CPPTOML_PATH}
  rm -r ${CPPTOML_BUILD}
}

cmake_iox()
{
  cd ${SRC_PATH}
  # cmake 建立 iceoryx 编译关系
  cmake -B${BUILD_PATH} -H${SRC_PATH} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} #[[-Dcpptoml_DIR=${CPPTOML_INSTALL}]]
}

build_iox()
{
  # 编译 iceoryx
  cd ${BUILD_PATH} && make -j 4
  sleep 1
  #make install
}

##################################################################################
#                                     开始编译                                     #
##################################################################################

main()
{
  set_toolchain_file
if [ ! -e ${CPPTOML_INSTALL} ];then
  build_cpptoml
else
  echo "have ${BUILD_PATH}"
fi
  cmake_iox
  build_iox
  cd ${SRC_PATH}
}

main @
cp logConfig.yaml ${BUILD_PATH}

echo "==== Build Success ===="
